package com.zuo_book.config;

import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import lombok.extern.slf4j.Slf4j;

import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.Base64;

/**
 * JWT配置类
 * 将JWT相关配置从SecurityConfig中分离，避免循环依赖
 */
@Configuration
@Slf4j
public class JwtConfig {

    /**
     * 创建JWT签名密钥Bean
     * @return JWT签名密钥
     */
    @Bean
    public SecretKey jwtSigningKey() {
        // 直接使用JJWT提供的方法生成安全的HS512密钥
        // 这将确保密钥长度满足HS512算法的要求(≥512位)
        SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS512);
        
        // 记录密钥信息（不记录密钥内容本身）
        log.info("已生成安全的JWT密钥，算法: {}, 密钥长度: {} 位", 
                SignatureAlgorithm.HS512.getJcaName(), 
                key.getEncoded().length * 8);
        
        return key;
    }
} 